package com.shareware.common.annotation

import androidx.annotation.IntDef
import com.shareware.common.rxBus.ThreadMode
import com.shareware.common.utils.INetChangeProtocol

/**
 * desc: 功能描述
 * email: mobiledeveloper@qq.com
 */

/**
 * kotlin open no args注解
 */
@Retention(AnnotationRetention.BINARY)
@Target(AnnotationTarget.CLASS)
annotation class OpenNoArgs

@IntDef(
    INetChangeProtocol.NETWORK_NONE, INetChangeProtocol.NETWORK_AVAILABLE,
    INetChangeProtocol.NETWORK_MOBILE, INetChangeProtocol.NETWORK_MOBILE_OFF,
    INetChangeProtocol.NETWORK_WIFI, INetChangeProtocol.NETWORK_WIFI_OFF
)
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.VALUE_PARAMETER)
annotation class NetState

/**
 * RxBus注解
 */
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
annotation class Subscribe(val tag: Int, val thread: ThreadMode = ThreadMode.MAIN_THREAD)

/**
 * 多次点击拦截，只能使用在onClick(View)方法上
 */
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
annotation class FastDoubleClickIgnore

/**
 * Gson 注解 表示若成员Int为null或0时，不进行序列化，生成的Json中没有此元素
 * 若不想生成某元素，使用@Transient注解
 */
//class JsonIntIgnoreAdapter : TypeAdapter<Int>() {
//    override fun write(out: JsonWriter, value: Int?) {
//        if (value == null || value == 0) {
//            out.nullValue()
//            return
//        }
//        out.value(value)
//    }
//
//    override fun read(inReader: JsonReader): Int {
//        if (inReader.peek() === JsonToken.NULL) {
//            inReader.nextNull()
//            return 0
//        }
//        return inReader.nextInt()
//    }
//}